﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Configuration;
using DTO;
using DAL;

namespace BLL
{
    public class SanPhamBLL
    {
        #region Khai báo
        private SanPhamDAL _spDAL;
        private List<SanPhamDTO> _lst;
        private SanPhamDTO _spDTO;
        #endregion

        #region Khởi tạo
        public SanPhamBLL()
        {
            _spDAL = new SanPhamDAL();
        }
        #endregion

        #region Lấy danh sách sản phẩm theo danh mục
        public List<SanPhamDTO> GetListSanPhamTheoDanhMuc(string madm)
        {
            _lst = new List<SanPhamDTO>();
            try
            {
                _lst = _spDAL.GetListSanPhamTheoDanhMuc(madm);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return _lst;
        }
        #endregion

        #region Lấy danh sách sản phẩm
        public List<SanPhamDTO> GetListSanPham()
        {
            _lst = new List<SanPhamDTO>();
            try
            {
                _lst = _spDAL.GetListSanPham();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return _lst;
        }
        #endregion

        #region Lay thong tin 1 san pham dựa vào mã sản phẩm
        public SanPhamDTO GetSanPham(string masp)
        {
            _spDTO = new SanPhamDTO();
            try
            {
                _spDTO = _spDAL.GetSanPham(masp);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return _spDTO;
        }
        #endregion

        #region Comment
        //// lay thong tin san pham full
        //public List<SanPhamFullDTO> GetSanPhamFull(string masp)
        //{
        //    return _spDAL.GetSanPhamFull(masp);
        //}

        //// lay thong tin san pham cho gio hang
        //public GioHangDTO GetSanPhamVaoGioHang(string masp)
        //{
        //    GioHangDTO gh = new GioHangDTO();
        //    return _spDAL.GetSanPhamVaoGioHang(masp);
        //}

        //// lấy danh sách sản phẩm mới 
        //public List<SanPhamFullDTO> GetListSanPhamMoi()
        //{
        //    return _spDAL.GetListSanPhamMoi();
        //}

        //// sp khuyến mãi
        //public List<SanPhamFullDTO> GetListSanPhamKhuyenMai()
        //{
        //    return _spDAL.GetListSanPhamKhuyenMai();
        //}

        //// thu nghiem lay san pham co list hinh anh
        //public List<SanPhamFullDTO> GetListSanPhamHot()
        //{
        //    return _spDAL.GetListSanPhamHot();
        //}

        //// lay danh sách sản phẩm theo nhóm
        //public List<SanPhamFullDTO> GetListSanPhamTheoNhom(string manhom)
        //{
        //    return _spDAL.GetListSanPhamTheoNhom(manhom);
        //}


        //// tìm kiếm sản phẩm theo tên sp
        //public List<SanPhamFullDTO> timKiemSanPham(string tukhoa)
        //{
        //    return _spDAL.timKiemSanPhamTheoTen(tukhoa);
        //}

        //// bang gia
        //public List<SanPhamDTO> GetListSanPhamToBangGia()
        //{
        //    return _spDAL.GetListSanPhamToBangGia();
        //}
        #endregion

        #region Phương thức thêm 1 sản phẩm
        /// <summary>
        /// Phương thức thêm 1 sản phẩm
        /// </summary>
        /// <param name="sp">SanPhamDTO</param>
        /// <param name="ha">HinhAnhDTO</param>
        /// <returns>int</returns>
        public int Them(SanPhamDTO sp, HinhAnhDTO ha)
        {
            _spDAL = new SanPhamDAL();
            int rs = 0;
            try
            {
                rs = _spDAL.Them(sp, ha);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return rs;
        }
        #endregion

        #region Phương thức xóa sản phẩm
        /// <summary>
        /// Phương thức xóa sản phẩm
        /// </summary>
        /// <param name="sp">SanPhamDTO</param>
        /// <returns></returns>
        public int Xoa(SanPhamDTO sp)
        {
            _spDAL = new SanPhamDAL();

            int _index = -1;
            try
            {
                _index = _spDAL.Xoa(sp);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return _index;
        }
        #endregion

        #region Phương thức sửa sản phẩm
        /// <summary>
        /// Phương thức sửa sản phẩm
        /// </summary>
        /// <param name="sp">SanPhamDTO</param>
        /// <param name="ha">HinhAnhDTO</param>
        /// <returns></returns>
        public int Sua(SanPhamDTO sp, HinhAnhDTO ha)
        {
            _spDAL = new SanPhamDAL();
            int rs = 0;
            try
            {
                rs = _spDAL.Sua(sp, ha);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return rs;
        }
        #endregion

        #region Phương thức sửa sản phẩm
        /// <summary>
        /// Phương thức sửa sản phẩm
        /// </summary>
        /// <param name="sp">SanPhamDTO</param>
        /// <returns></returns>
        public void Sua(SanPhamDTO sp)
        {
            _spDAL = new SanPhamDAL();            
            try
            {
                _spDAL.Sua(sp);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }            
        }
        #endregion

        #region Phương thức GetListSanPham_HinhAnh - Đếm số mediaCount
        /// <summary>
        /// Phương thức GetListSanPham_HinhAnh - Đếm số mediaCount
        /// </summary>
        /// <returns></returns>
        public List<SanPhamDTO> GetListSanPham_HinhAnh()
        {
            _spDAL = new SanPhamDAL();
            List<SanPhamDTO> _lst = new List<SanPhamDTO>();
            try
            {
                _lst = _spDAL.GetListSanPham_HinhAnh();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return _lst;
        }
        #endregion

        #region bang gia
        public List<SanPhamDTO> GetListSanPhamToBangGia()
        {
            return _spDAL.GetListSanPhamToBangGia();
        }
        #endregion

        #region lay thong tin san pham cho gio hang
        public GioHangDTO getSanPhamVaoGioHang(string masp)
        {
            GioHangDTO gh = new GioHangDTO();
            return _spDAL.getSanPhamVaoGioHang(masp);
        }
        #endregion 

        #region timKiemSanPham
        public List<SanPhamDTO> timKiemSanPham(string tukhoa)
        {
            return _spDAL.timKiemSanPhamTheoTen(tukhoa);
        }
        #endregion

    }
}